home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / mcu332 / 332equ.arc / DEF.MAC < prev    next >
Text File  |  1990-03-12  |  8KB  |  196 lines

  1.  
  2. ****************************************************************************
  3. * $RCSfile: def.mac $
  4. * $Revision: 1.1 $
  5. * $Date: 90/03/12 13:46:02 $
  6. *
  7. *       -------------------------------------------------------------
  8. *       Module Name:        DEF - Define Symbols Macro
  9. *       -------------------------------------------------------------
  10. *
  11. *       Description:
  12. *          1. This file contains EQUates and a DEF macro for use with
  13. *             MCU's that have internal registers and the bits in those
  14. *             registers.  By INCLUDE'ing this file with the specific MCU
  15. *             equate file(s), mnemonic symbols are defined for the
  16. *             internal registers and bits.
  17. *          2. The DEF macro controls how these mnemonic symbols are
  18. *             defined.  By channeling all symbol definitions through the
  19. *             DEF macro, changes made to the DEF macro will affect ALL
  20. *             symbol definitions upon re-assembly!  See the DEF macro for
  21. *             more details.
  22. *
  23. *       Notes:
  24. *          1. Motorola reserves the right to make changes to this file.
  25. *             Although this file has been carefully reviewed and is
  26. *             believed to be reliable, Motorola does not assume any
  27. *             liability arising out of its use.  This code may be freely
  28. *             used and/or modified at no cost or obligation to the user.
  29. *          2. All descriptions are WORD values unless stated otherwise.
  30. *          3. This file was made for use with the Motorola Development
  31. *             Systems M68000 Family Structured Assembler for MS-DOS,
  32. *             known as M68MASM.
  33. *          4. To use this file, either use an INCLUDE statement or just
  34. *             merge this file and the appropriate MCU register equate
  35. *             file(s) into your source code file.  Consult your assem-
  36. *             bler's user's manual for the details specific to your
  37. *             situation.
  38. *          5. The latest version of this file is maintained on the
  39. *             Motorola FREEWARE Bulletin Board, 512/891-FREE (512/891-
  40. *             3733).  It operates continuously (except for maintenance)
  41. *             at 1200-2400 baud, 8-bits, no parity.  Download the
  42. *             archive file <mcu>EQU.ARC to get all the files, where
  43. *             <mcu> represents the processor type desired, i.e.
  44. *             332EQU.ARC for MC68332, etc.
  45. *
  46. ****************************************************************************
  47.  
  48.  
  49. * Defines for Bit Definition Types (see DEF macro):
  50. *
  51. BIT$NUM  EQU   1                 Bit numbers (0-15)
  52. BIT$VAL  EQU   2                 Bit position values ($0000-$8000)
  53. BIT$BOTH EQU   BIT$NUM+BIT$VAL   Both bit numbers and values
  54. *
  55. BIT$CODE EQU   BIT$BOTH          Bit definitions for this assembly!
  56. *  NOTE:  Change BIT$CODE above to control bit definition types!
  57.  
  58.  
  59. * Bit Number Equates
  60. *
  61. .B15    EQU     15
  62. .B14    EQU     14
  63. .B13    EQU     13
  64. .B12    EQU     12
  65. .B11    EQU     11
  66. .B10    EQU     10
  67. .B9     EQU     9
  68. .B8     EQU     8
  69. .B7     EQU     7
  70. .B6     EQU     6
  71. .B5     EQU     5
  72. .B4     EQU     4
  73. .B3     EQU     3
  74. .B2     EQU     2
  75. .B1     EQU     1
  76. .B0     EQU     0
  77.  
  78.  
  79. * Bit Value Equates
  80. *
  81. _B15    EQU     1<<.B15
  82. _B14    EQU     1<<.B14
  83. _B13    EQU     1<<.B13
  84. _B12    EQU     1<<.B12
  85. _B11    EQU     1<<.B11
  86. _B10    EQU     1<<.B10
  87. _B9     EQU     1<<.B9
  88. _B8     EQU     1<<.B8
  89. _B7     EQU     1<<.B7
  90. _B6     EQU     1<<.B6
  91. _B5     EQU     1<<.B5
  92. _B4     EQU     1<<.B4
  93. _B3     EQU     1<<.B3
  94. _B2     EQU     1<<.B2
  95. _B1     EQU     1<<.B1
  96. _B0     EQU     1<<.B0
  97.  
  98.  
  99. * Mask Value Equates
  100. *
  101. MSK16   EQU     $FFFF   16-bit mask
  102. MSK15   EQU     $7FFF   15-bit mask
  103. MSK14   EQU     $3FFF   14-bit mask
  104. MSK13   EQU     $1FFF   13-bit mask
  105. MSK12   EQU     $0FFF   12-bit mask
  106. MSK11   EQU     $07FF   11-bit mask
  107. MSK10   EQU     $03FF   10-bit mask
  108. MSK9    EQU     $01FF    9-bit mask
  109. MSK8    EQU     $00FF    8-bit mask
  110. MSK7    EQU     $007F    7-bit mask
  111. MSK6    EQU     $003F    6-bit mask
  112. MSK5    EQU     $001F    5-bit mask
  113. MSK4    EQU     $000F    4-bit mask
  114. MSK3    EQU     $0007    3-bit mask
  115. MSK2    EQU     $0003    2-bit mask
  116. MSK1    EQU     $0001    1-bit mask
  117.  
  118.  
  119. ****************************************************************************
  120. * Define Bit Macro:
  121. *   Syntax:            DEF     <name>,<value>[,<field size>[,<reg size>]]
  122. *
  123. *     where:  <name>         is the bit name to be defined.
  124. *             <value>        is the bit number associated with <name>;
  125. *                              must be entered as "Bn", where "n" = 0-15.
  126. *             <field size>   is the optional bit field size starting with
  127. *                              <value> which must be the least significant
  128. *                              bit (LSB) of the field.  When this parameter
  129. *                              is present, only the bit field and bit number
  130. *                              labels are defined.
  131. *             <reg size>     is the optional size of the register, entered
  132. *                              as "MSK8" for BYTE sized operands (8-bit).
  133. *                              The default value is "MSK16" for WORD sized
  134. *                              operands.
  135. *   Action:
  136. *     Defines bit number, bit value, or bit field labels based on the
  137. *     <name> label and the value of BIT$CODE (defined above).
  138. *        Label Key:
  139. *          Period     prefix       (.)      denotes bit number label.
  140. *          Underscore prefix       (_)      denotes bit value label.
  141. *          Underscore suffix       (_)      denotes bit field label.
  142. *          Underscore MSK  suffix  (_MSK)   denotes bit field mask label.
  143. *          Underscore NMSK suffix  (_NMSK)  denotes not-bit field mask label.
  144. *        Label Examples:
  145. *          .NAME     = bit number         label, i.e. 0-15
  146. *          _NAME     = bit value          label, i.e. $0000-$8000
  147. *          NAME_     = bit field value    label, i.e. $0100   (LSB of field)
  148. *          NAME_MSK  = bit field mask     label, i.e. $0700   (3-bit field)
  149. *          NAME_NMSK = bit field not-mask label, i.e. $F8FF   (3-bit field)
  150. *
  151. *   Notes:
  152. *     1. The "SET" directive is used here instead of the "EQU" directive
  153. *        to allow multiple definitions of the same bit labels that are
  154. *        used for multiple registers, each with the same values.
  155. *     2. If the user changes the predefined label rules per the Label Key
  156. *        above, it is their responsibility to ensure duplicate labels with
  157. *        different bit values do not occur!
  158. *
  159. DEF     MACRO
  160.    IFC       "","\3"
  161.      IFNE      BIT$CODE&BIT$NUM
  162. .\1     SET     .\2
  163.      ENDC
  164.      IFNE      BIT$CODE&BIT$VAL
  165. _\1     SET     _\2
  166.      ENDC
  167.    ENDC
  168.    IFNC      "","\3"
  169. .\1     SET     .\2
  170. \1_     SET     _\2
  171. \1_MSK  SET     (MSK\3)<<.\2
  172.      IFC       "","\4"
  173. \1_NMSK SET     (-\1_MSK-1)&MSK16
  174.      ENDC
  175.      IFNC      "","\4"
  176. \1_NMSK SET     (-\1_MSK-1)&\4
  177.      ENDC
  178.    ENDC
  179.         ENDM
  180.  
  181.    IFNE    0   ------- don't assemble unless needed --------
  182.         DEF     NBL0,B0,4    . nibble  0
  183.         DEF     NBL1,B4,4    . nibble  1
  184.         DEF     NBL2,B8,4    . nibble  2
  185.         DEF     NBL3,B12,4   . nibble  3
  186.  
  187.         DEF     HNBL0,B0,2   . half nibble  0
  188.         DEF     HNBL1,B2,2   . half nibble  1
  189.         DEF     HNBL2,B4,2   . half nibble  2
  190.         DEF     HNBL3,B6,2   . half nibble  3
  191.         DEF     HNBL4,B8,2   . half nibble  4
  192.         DEF     HNBL5,B10,2  . half nibble  5
  193.         DEF     HNBL6,B12,2  . half nibble  6
  194.         DEF     HNBL7,B14,2  . half nibble  7
  195.    ENDC
  196.